home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-03-14 | 27.7 KB | 676 lines | [TEXT/MACA] |
- ***** 27722 0
- Received: from SUN.COM by WSMR07 ; 11 Mar 88 14:55:06 MST
- Received: from plaid.Sun.COM by Sun.COM (4.0/SMI-4.0)
- id AA24667; Fri, 11 Mar 88 09:38:00 PST
- Received: by plaid.Sun.COM (3.2/SMI-4.0Beta)
- id AA04060; Fri, 11 Mar 88 09:32:18 PST
- Date: Fri, 11 Mar 88 09:32:18 PST
- From: hyper-hackers-request%plaid@Sun.COM
- Message-Id: <8803111732.AA04060@plaid.Sun.COM>
- To: hyper-hackers%plaid@Sun.COM
- Subject: WINDOID #6
-
- WINDOID #6
-
- A Publication for the Informed HyperCard User
- and the Newsletter for the Apple HyperCard User Group
-
- Editor -- David Leffler
-
- IN THIS ISSUE
-
- Editorial: HyperCard 1.1
- Editors Choice: MacRecorder* by Farallon Computing, Inc.
- HyperCard Power Tips Six by Phil Wyman
- Gesture by Ted Kaehler
- Novice Corner by Phil Wyman
- Find Next by Ted Kaehler
- HyperCard Utility Scripts by Robin Shank
- Scrolling Multiple Fields by Bill Champ
- ==========
-
- I have had many requests for back issues of WINDOID. If you would like a copy,
- or copies, please send a self-addressed-stamped-envelope-(SASE) to the address
- listed on THE FORM for each issue. AHUG does not have a mailing list, so we
- cannot put you on ours. If you would like to receive future issues of WINDOID,
- please send SASEs, and I will get them out to you as time allows.
- Thank you for your continued interest in WINDOID.
-
- ==========
-
- Editorial
- by David Leffler
-
- Well, finally! Just when people were starting to doubt whether or not WINDOID
- #6 would ever appear, here it is. We have been very busy getting HyperCard 1.1
- out the door, and we wanted to make sure that all the Apple dealers and
- licensed Apple User Groups had the HyperCard 1.1 Upgrade disk before
- publication. By now, all Apple dealers definitely have the HyperCard 1.1
- Update disk in their stores but they are under no obligation to give it to
- anyone. However, Apple dealers are the best and I am sure they will do
- everything possible to make sure their customers are satisfied.
- HyperCard 1.1 contains many user-requested fixes and enhancements to make your
- stack use, and creation, just that much more elegant. It contains a READ ME
- FIRST! stack that outlines the new features and updates your Home card with the
- new Text Arrows check box and some new Import and Export buttons you have asked
- for. Additionally, there are new and improved internationalized Phone, Area
- Codes, and Datebook stacks. We were going to ship a new Home stack but
- recognized that many people had modified their Home cards. If we shipped a new
- Home stack, some people would have dragged the new Home into their HyperCard
- Stacks folder and inadvertently replaced their old Home. We hope you like the
- way we make the transition easy for you. The Text Arrows check box allows you
- to choose whether or not you want to use cursor keys in text fields. With the
- box checked you can use your cursor keys to move about in text fields. If you
- then want to go from card to card just press the Option key first. Naturally,
- if the box is not checked, everything works just the way you are used to. For
- all of you that sent in requests for features and found for us some of the
- problems we fixed for this release, we offer our thanks. You really made a
- quality difference!
- If you want the new release, and believe me you do, bring to your Apple dealer
- either your original HyperCard Startup, HyperCard & Stacks disks, or the
- purchase slip for your Macintosh dated after August 11, 1987, and the Upgrade
- is FREE. Also, if you want to keep your dealer happy, please bring in an
- INITIALIZED disk for the upgrade. They are not going to give disks away.
- NOTE: When we enhanced the 1.1 Datebook stack to work with the international
- HyperCard version, there was a modification that makes a small part of the
- HyperCard manual tutorial not work properly. When you try to create the To Do
- stack from the Datebook stack, the entire Datebook stack gets created. This
- can be a bit disconcerting. The best thing to do is either copy the To Do card
- and paste it into a new empty stack, or just use the old Datebook stack to do
- the tutorial.
-
- ==========
-
- Editors Choice
-
- There is a new HyperCard oriented product that I think you should know about.
- It is called MacRecorder* from Farallon Computing, Inc. It is a hand-held
- recording device that plugs directly into the serial port on your Macintosh
- with no external power supply. One really neat thing about MacRecorder is a
- stack called HyperSound*. This stack allows you to record a sound and, with a
- click of a button, install it into any stack complete with its own button.
- This is really a fantastic and fun tool for painlessly introducing sounds into
- HyperCard stacks. Additionally, if you have a Macintosh II and two of these
- devices, you can record in stereo.
-
- One last note to Team HackandSlash in Hawaii: Thank you for your outstanding
- contribution to spreading WINDOID around. I love the format and appreciate the
- way you have taken WINDOID issues and turned them into interesting and fun
- stacks. Keep up the good work!
-
- ==========
-
- HyperCard Power Tips Six
-
- by Phil Wyman
-
- 1. Tear off the "Tools" menu. If you double-click on the Eraser tool, you'll
- erase all card paint. This can be quite shocking if you do it by mistake. If
- this happens to you, either select UNDO from the Edit menu, press the tilde
- ( ~ ) key, the escape key, or select CMD-Z from the keyboard before doing
- anything else. This will bring your paint back for you. If CMD-Z doesn't get
- it back, you can try REVERT from the Paint menu. Revert takes you back to the
- state the paint was in when you last entered the card. Leaving a card, even
- for a moment, is the same as saving all the paint elements on that card or
- choosing Keep from the Paint menu.
- For fun, double-click on all the other powerful paint tools and see what
- happens.
-
- 2. To initialize a variable in HyperTalk, you should put the assignment of the
- variable in an "on openStack" handler. You will normally only want to
- initialize your variables the first time you enter your stack. If this is so,
- you will need to put the following into your openStack handler...
-
- on openstack
- global var
- if var is empty then put 12 into var
- end openstack
-
- This way, no matter how many times the user comes into their stack during a
- HyperCard session, the variable "var" will only be assigned this value the
- first time, since the second time into the stack the global variable will no
- longer be empty.
-
- 3. If you have a non-SCSI (old HD-20) hard disk or, heaven forbid, a floppy
- based system, and you have tried to play a long, sophisticated sound in
- HyperCard, you might notice very poor sound quality because of numerous clicks
- and pops. These clicks and pops are caused by your disks access time being too
- slow when HyperCard tries to access them.
- There is, however, a nice workaround (as suggested by Barbara at Farallon
- Computing). To stop HyperCard from accessing the disk (doing any processing)
- while the sound is playing. Try this in your script...
-
- play "nameOfSound"
- wait until the sound is "done"
-
- 4. A tip from Paul Foraker... If the msg box is already open, and you are
- typing in a field, there is a way to start typing in the msg box without moving
- your fingers from the keyboard. Type CMD-M twice and you can now type in the
- msg box.
-
- 5. Tear off the "Tools" windoid. Double click on "A" to access different fonts
- and font attributes for typing Paint Text onto the card or background. If you
- have already started typing and have not clicked anywhere else, when you change
- the font you will change the font for everything you just typed. If you have
- already started typing and you wish to change the font only for what you type
- next, then click with the mouse at where you want to start before again
- double-clicking on the "A" in the tool menu.
-
- 6. "Not" in HyperTalk works similarly to English. Therefore , you can say...
-
- if variable is not "Yes" then go next card
-
- You may also think of "Not" in HyperTalk as a boolean form of the false
- condition. For example you may have a button which you want to alternately hide
- and show a field...
-
- on mouseup
- set visible of field "fldName" to not visible of field "fldName"
- end mouseup
-
- 7. If you protect a stack to allow only the browsing userlevel, you can reset
- it to a different level by pressing on the Command key before clicking on the
- File menu. You will then be able to choose "Protect Stack" and reset the
- userlevel.
-
- ==========
-
- Gesture
- by Ted Kaehler
-
- Use a gesture to get to a button's script, without having to choose the Button
- Tool. The gesture consists of pressing and holding the mouse button down
- inside the button, and moving the cursor in and out of the top edge of the
- button 2 times! (Rub the top edge of the button.)
-
- Practice until you can do it.
-
- (The trick here is to not interfere with anything else. I don't use the idle
- task, it can slow things down. The whole thing is in the mouseStillDown
- message. If your button uses mouseStillDown, you might want to "pass
- mouseStillDown" at the end of your script.)
-
- Put this into your Home stack script
-
- on mouseStillDown
- --Edits the script of a button if you press and hold the
- --mouse button inside the button, and quickly
- --move in and out of the top edge of the button twice.
- if "button" is not in the name of the target then exit mouseStillDown
- global editTicks, editState
- if (the ticks)-editTicks > 120 then
- put the ticks into editTicks
- put 0 into editState
- else
- get the rect of the target
- if the mouseV < (item 2 of it) then
- if editState = 0 then put 1 into editState
- if editState = 2 then put 3 into editState
- end if
- if the mouseV > (item 2 of it) then
- if editState = 1 then put 2 into editState
- if editState = 3 then put 4 into editState
- end if
- end if
- --put editState
- if editState = 4 then edit script of the name of the target
- end mouseStillDown
-
- ==========
-
- HyperCard Novice Corner
-
- by Phil Wyman
-
-
- Many novice HyperCard users have asked WINDOID for a beginners tips section. I
- thought about this and remembering that most of the questions asked of me at
- the San Francisco MacWorld Expo started with something like "I just bought a
- Macintosh and HyperCard came with it. Could you show me what it does?" I have
- therefore decided to begin this column for WINDOID. If you are a beginning
- HypeCard user please use the form at the back of WINDOID to send me your
- questions. I will answer some of the most often asked in this column.
-
- When asked "What is HyperCard?" I would normally begin my answer with something
- Bill Atkinson said: "HyperCard is a software erector set." In other words,
- HyperCard is a group of tools you can use to easily create your own Macintosh
- software applications. The basic tools consist of Buttons, Fields, Graphics,
- and Cards. Buttons can complete actions when the user clicks on them, Fields
- can hold text for you, and Graphics can create a mood.
- A Card is always the exact size of the entire Macintosh Plus screen. When the
- screen changes, you normally go to another card. When you put a few of these
- cards together, you have a stack of cards. Stacks are files that you can copy
- to diskettes and give to your friends or sell to others that need them.
-
- Your button, field, and graphics tools are in your Tools menu. You will see
- the Tools menu if you are at a high enough "userlevel." To see the userlevel
- you are currently working with, or to change it, go to the Home card (select
- Home from the Go menu), and click the left arrow. You will find yourself on the
- Preferences card. Click on the various Userlevels, Browsing through Scripting,
- and watch the menubar and Preference card change to reflect your selection.
-
- HyperCard contains a language called HyperTalk. You really don't have to use
- HyperTalk to create HyperCard stacks as some people think. However, once
- mastered, HyperTalk will allow you to automatically do almost anything you can
- do manually in HyperCard. Some beginning HyperTalk users have trouble because
- they think that you have to type all the HyperTalk commands exactly like they
- are presented in the on-line Help documentation. This is not so. HyperTalk is
- very forgiving. For example, the HyperTalk command "doMenu", allows you to
- select any menu item automatically (this works for Desk Assessories as well.)
- If you use a menu item that is two words long and/or followed by three periods
- you will have to put both words and/or the periods between quotes. If you type
- "doMenu Home" into a button script, the next time you click that button, you
- will go to the Home Card.
-
- on mouseUp
- doMenu Home
- end mouseUp
-
- on mouseUp
- doMenu "Open Stack..."
- end mouseUp
-
- However, you don't have to type "doMenu Home" with the capital and lowercase
- letters exactly as they appear in the example. We do this in the documentation
- for easier readability. All the following examples will do exactly the same
- thing: "domenu home"; "DOMENU HOME"; "doMENU hoME"; or "doMenu Home".
- Therefore, you should know that in HyperTalk nothing is case sensitive. It
- never matters whether the words are spelled with an upper or lower case. Even
- the "Find" command does not care about letter case-sensitivity. If you try to
- Find "TEST" in HyperCard, you will find all occurrences of the word "test"
- including "Test"; "test"; "TEST"; and "tesT".
-
- Many beginning HyperCard users have been bothered by the fact that sometimes,
- when they are typing in a field, the I-beam cursor disappears. They have to
- repeatedly click in the field to continue typing. This is noticeable in the
- Home Card or on other Cards where a HyperTalk script updates the time that may
- appear in another field. When the script updates the time, the cursor is moved
- into that field and is removed from the field you are working in. To fix this,
- you either have to use another stack or disable the feature by removing or
- inactivating the "On idle" HyperTalk script. To inactivate a line of any
- HyperTalk script you type a double hyphen ( -- ) before the line.
-
- A hint for moving between fields on a card is to press the TAB key to go from
- field to field. If you wish to go backwards from field to field, hold the
- SHIFT key down and press the TAB key.
-
- One really great thing about HyperCard is that it allows non-programmers, the
- rest of us, to make full use of our computers without having to become
- programmers. HyperCard allows us to create powerful and meaningful
- applications with just buttons, fields, cards, and graphics. So don't feel as
- if you have to learn the HyperTalk language to create your application. Rather,
- learn to use the basic tools Macintosh and HyperCard gives you to create a
- stack of cards that can help you in your own area of expertise. Just
- double-click on "HyperCard" in the finder. You will arrive in the HOME card,
- which will be your base of operations. Click on the buttons to see what they
- do. If you get disoriented, you can always choose "Go Home" from the Go menu to
- go back to your Home card. If the menu isn't showing, hold down the Command
- key and press the Spacebar to show it again. I hope you have a wonderful time
- using and enjoying HyperCard.
-
- ==========
-
- FIND NEXT
- Civilized searching controlled by your script
- by Ted Kaehler
-
- The function findNext(theString) goes to the next card containing the string.
- It uses the find command because its so fast. It counts the number of cards
- the string has been found on, and lets you do whatever you want on each card it
- finds. findNext keeps track of the first card it found and tells you when
- you've gone all the way around the stack.
-
- To use findNext, declare "numberFound" to be a global variable. Set it to
- zero. findNext("Abe") will return true if it found a new card with "Abe" on
- it. It returns false if there are no more cards with "Abe". Each time,
- "numberFound" has the number of cards "Abe" was found on.
-
- Example: Put this into your button script.
-
-
- on mouseUp
- --an example of using findNext()
- --count the number of cards with a word starting with "Abe" or whatever
- global numberFound
- put 0 into numberFound
- repeat while findNext("Abe") --"Abe" or whatever you choose
- end repeat
- put "Found on" && numberFound && "cards" into message
- end mouseUp
-
- Put this into your stack script.
-
- function findNext key
- --fast searching of a stack under program control. see example.
- --return true if we found a new occurance, false if done
- --numberFound will have the total we have found
- global numberFound, firstFound
- if (numberFound = 0) or (firstFound is empty)
- then return findFirst(key)
-
- go next card
- find key
-
- if the result is "not found" then
- put empty into firstFound
- return false
- end if
-
- if the ID of this card <> firstFound then
- add 1 to numberFound
- return true --we found another occurance
- else --we wrapped around the stack
- put empty into firstFound
- return false
- end if
- end findNext
-
- function findFirst key
- --only called by findNext (not called by user)
- --because numberFound = 0, we know this is the first time
- global numberFound, firstFound
- if numberFound <> 0 then
- ask "You must put 0 into numberFound before calling findNext()" with "OK"
- return false
- end if
-
- find key
-
- if the result is "not found" then
- put empty into firstFound
- return false
- else --we found it
- put the ID of this card into firstFound
- put 1 into numberFound
- return true
- end if
- end findFirst
-
- You can put findNext() and its subroutine, findFirst(), into your home script.
- If you have stricter conditions on the cards you want to find, do your tests on
- each card that findNext finds.
-
- ==========
-
- HyperCard Utility Scripts:
- By Robin Shank
-
- The following is a small collection of utility scripts that I find useful in my
- work.
-
- Finding the Finder
- When running under MultiFinder, the following script will hide the HyperCard
- window, the Message window, and any tearoff windoids and put you in the Finder.
- It is handy when installed into a button on the Home card, especially when you
- are working on a small-screen Mac. When you choose HyperCard from the Apple
- menu, the HyperCard windows will reappear exactly as you left them. Note:
- Hide/Show card window is a new feature of version 1.1, so you must be running
- that version for this script to work.
-
- on mouseUp
- hide card window
- doMenu "finder"
- end mouseUp
-
- The following is another handy script that uses hide/show card window. This
- utility allows you to toggle between settings for small and large screen Macs.
- One useful example is to put the word "setWindow" under "StartUp" in your Home
- Stack script and put the following script at the end. When you first open
- HyperCard you can have your windows right where you want them.
-
- on setWindow
- answer "Which CPU?" with "Mac II" or "Mac +"
- if it is "Mac II" then
- show menuBar
- show card window at 20,50
- show tool window at 524,198
- show message window at 0,370
- else if it is "Mac +" then
- show card window at 0,0
- hide tool window
- hide pattern window
- show msg at 30,260
- hide msg
- end if
- end setWindow
-
-
- Recovering lost buttons
- Well, this script won't recover anything you've already lost, but it may save
- you a headache in the future. Put this script in the Home stack script. When
- ever you try to get rid of a button this script will complain and give you the
- chance to get your button back.
-
- on deleteButton
- answer "Do you REALLY want to delete that button?" B
- with "No, Copy it" or "Yes"
- if it is "No,Copy it" then
- doMenu "copy button"
- doMenu "paste Button"
- end if
- end DeleteButton
-
- Changing a button's font style
- Yes, there are alternatives to those generic round rect buttons with text in
- good ol' Chicago. Buttons can be assigned a font and font style through a
- script. If you wish to change the font of a single button, just type
- set the textFont of card button "fred" to "Geneva"
- into the message box, and hit return. In addition, you can set the size (set
- textSize...), style (set textStyle...) alignment (set TextAlign...), and height
- (set textHeight...), of any button. My current personal favorite is a
- shadowed button with 10 point Geneva text.
-
- Once you get the hang of changing the text-related attributes of buttons, it
- can get a bit tedious to set all these styles by typing lines into the msg box.
- The following script installed into a functionKey and invoked from the message
- box can be a real finger saver. It will change the button you specify to your
- choice of font, font size, and font style.
-
- on ChangeButton
- ask "Which button?" with "Card button ID " & id of last button
- if it is empty then exit ChangeButton
- put it into btnname
-
- ask "Font, Size, Style?" with "Geneva,9,bold"
- if it is empty then exit ChangeButton
-
- if first item of it is not empty
- then do "set textFont of " & btnname & " to " & first item of it
-
- if item 2 of it is not empty
- then do "set textSize of " & btnname & "to " & item 2 of it
-
- if item 3 of it is not empty
- then do "set textStyle of " & btnname & "to " & item 3 of it
-
- end changeButton
-
- Invoking this script will present two dialogs. In the first dialog, enter the
- full name of any button on that card. Remember to specify card or background
- button, and refer to it by name, id or number. (bkgnd btn "New button".) In
- the second dialog, enter the font, size and style, separated by commas. If you
- do not wish to change one of the attributes, leave it blank (font, ,style) or
- enter what it currently is set to.
-
- An alternative solution:
- Locked fields can behave just like buttons. Create a field, enter your title
- into it, choose your text style through the Textstyle window, then lock the
- field. You can now put any "mouse" handler (on mouseUp,etc) into the script of
- this field and it will behave just like a rect button, with the exception of
- hiliting.
-
- Which line did I click on?
- The following function scripts return which line of a field was clicked on. In
- this case, "line" is defined as the number of textHeight increments from the
- top of the field, and not as a line of text ending with a carriage return.
- Also, the field needs to be locked when you click on it, or you will end up
- putting an insertion point in the field, not executing a script.
-
- A simple example of how this might be useful:
- Put the following handler as well as one of the functions into the script of a
- field. The field should be locked and contain some lines of text that do not
- wrap.
-
- on mouseUp
- answer "You clicked on line " & quote & line lineclicked()B
- of card field "newt" & quote
- end mouseUp
-
- function lineClicked
- return ((the mouseV - item 2 of the rect of the target) B
- div the textHeight of the target) + 1
- end lineClicked
-
- If you wish this to work on a scrolling field, it becomes a bit more complex to
- account for the possiblity of lines scrolled off the top.
-
- function lineClicked
- return (round((the scroll of the target / the textHeightB
- of the target) B
- + (((the mouseV - item 2 of the rect of the target) B
- div the textHeight of the target) + 1)))
- end lineClicked
-
-
- AutoCompaction will keep your stacks trim
- Install this script into your Home stack script. If any stack you are about to
- leave needs to be compacted, it will let you know. This is an easy way to
- ensure you always have lots of room on your hard disk (...for more stacks.)
-
- on closeStack
- if the freeSize of this stack >= 15000 then
- answer "This stack has " & round(the freeSize of thisB
- stack/1024) & "k free, Compact?" with "NO" or "OK"
- if it is "OK" then doMenu "compact stack"
- end if
- end closeStack
-
- ==========
-
- Scrolling Multiple Fields
- by Bill Champ
-
- WINDOID is great! It has been a big help to see those example scripts and learn
- new features and tricks. Especially things that are not shown in Goodman's book
- (Ed: Danny Goodman - The Complete HyperCard Handbook - Bantam) or other places.
- Since I've learned so much from WINDOID, I'd like to share a script with the
- other readers.
-
- How can you get several scrollable fields to all scroll together?
-
- Put these two handlers in your card script.
-
- On openCard
- global initScroll
- put 0 into initScroll
- repeat with i = 2 to 5
- set the scroll of card field i to initScroll
- end repeat
- end openCard
-
- The script above simply sets all the scrollable fields you want (in this case
- fields 2 thru 5) to zero - elevator at the top of the scroll bar. It also
- stores that scroll value (zero) in a global variable (initScroll).
-
- on updateScroll
- global initScroll
- repeat with i = 2 to 5
- set the scroll of card field i to initScroll
- end repeat
- end updateScroll
-
- This is the workhorse script. It sets the scroll of the fields you want, all
- equal to the variable initScroll. initScroll gets changed by the user scrolling
- one of the fields. That's what the next script does.
-
- Put the following script in each of the scrollable fields.
-
- on mouseWithin
- global initScroll
- if the scroll of me <> initScroll then
- get the scroll of me
- put it into initScroll
- updateScroll
- end if
- end mouseWithin
-
- The above script detects changes in a field's scroll bar and changes the value
- of the global variable initScroll. Then it calls the updateScroll script (on
- the card) to change all appropriate fields to the same value.
-
- These scripts are great for creating tabular style fields that can scroll and
- yet keep all the info lined up between fields. It helps to layout the fields
- evenly horizontal on the card.
-
- ==========
-
- We hope you have enjoyed reading this latest issue of WINDOID and have found it
- to be interesting and informative. We care enough to take the time to give you
- the most up-to-date information about HyperCard, and we would like to make a
- request for a little of your time. There is a form that follows this editorial;
- please fill it out if you will. We are very interested in hearing from you.
- What sort of stacks are you using, what kind of stacks are you creating, and
- what are your joys and frustrations in using HyperCard.
-
- You have the unique opportunity to communicate directly with Bill, Dan, and the
- entire HyperCard development team. We really want to know what you would like
- to see in HyperCard and are more than willing to give you what you want. What
- we need to make this happen is your input. Let us know what you think. We can
- address it in WINDOID or perhaps the next revision of HyperCard. You can make a
- difference in the world by communicating with us. DonUt pass up the
- opportunity!
-
- ==========
-
- If you have a bug, suggestion, comment, or just want to know the best way to do
- something in HyperCard, you can fill out the form and send
- it to:
-
- AHUG c/o David Leffler
- Apple Computer, Inc.
- MS/27-AQ
- 20525 Mariani Ave.
- Cupertino, CA 95014
-
- Or copy the format and
- Apple-Link* it to:
- HYPERBUG$
-
-
- TELL HYPERCARD
- You can use this form to notify the HyperCard team of problems, bugs, and
- enhancement requests.
-
- THE FORM:
-
- Please use the following form to make a difference in the world:
-
- Date:
- Name:
- Address:
- Phone #:
- Versions of:
- a. HyperCard:
- b. Associated software:
- c. System Software:
- 1. System
- 2. Finder
- 3. ImageWriter file
- 4. LaserWriter file
- 5. Any others
- Type of Macintosh:
- Peripherals:
- Description of problem, suggestions or comments:
-
-
- If you have some information for us please fill this form out as completely as
- possible and send it to us. You will be glad you did!
-
-
-
-
- ----------------------------------------
- Submissions to: hyper-hackers@plaid.sun.com
- Administrivia to: hyper-hackers-request@plaid.sun.com
- UUCP: {decwrl,hplabs,ihnp4}!sun!plaid!hyper-hackers{-request}
-